#ifndef MTA_FUNCTIONAL
#define MTA_FUNCTIONAL

#include <iostream>
#include <vector>
#include <unordered_map>

#include "TrainStopData.h"

namespace mta{
	//operations
	struct print{
		void operator()(trainStopData*);
	};
	struct printNameOnly{
		void operator()(trainStopData*);
	};
	//unary predicates
	struct onRoute{
		onRoute(char rt);
		bool operator()(trainStopData*);
		char rt;
	};

	struct inHarlem{
		inHarlem();
		bool operator()(trainStopData*);
		std::unordered_map<std::string, bool> set;
	};

	struct toTheLIRR{
		toTheLIRR();
		bool operator()(trainStopData*);
		std::unordered_map<std::string, bool> set;
	};

	struct all{
		bool operator()(trainStopData*){ return true; };
	};
}

#endif